package com.hmy.finance.service.statement;

import com.hmy.finance.dal.po.DeviceProfitLossDetailPo;
import com.hmy.finance.dal.po.json.ProfitLossInfoJson;
import com.hmy.finance.service.statement.dto.CreateStatementDeviceDto;
import com.hmy.finance.service.statement.dto.FuturePauseFeeCalculateHandlerDto;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

public interface IReconciliationStatementProviderService {

    BigDecimal futureFeeCalculateHandler(CreateStatementDeviceDto calculateStatementDeviceDto, BigDecimal rentPayable, Integer statementPeriodPauseDays, LocalDateTime feeIncurredTime, LocalDateTime currentRentalEndTime, Map<LocalDate, Double> pauseLossMap);

    FuturePauseFeeCalculateHandlerDto futurePauseFeeCalculateHandler(List<LocalDate> futureTimeList, Map<LocalDate, Double> pauseLossMap, LocalDate firstCycleFinalDate, BigDecimal dailyRentalPrice, BigDecimal firstCycleMonthlyRentalPrice, BigDecimal rentPayable);

    BigDecimal getProfitLossSubtotalWithDeviceLoss(List<DeviceProfitLossDetailPo> profitLossInfos, String billType);



    BigDecimal getProfitLossSubtotal(List<ProfitLossInfoJson> profitLossInfos, String billType);

    Integer calculateDaysBetween(LocalDateTime startTime, LocalDateTime endTime);
}
